package cn.itrip.auth.service;

import cn.itrip.beans.pojo.ItripUser;

/**
 * @author 瑾
 */
public interface TokenService {
    /**
     * 生成一条字符串token信息
     * @param userAgent 用户提交过来的HTTP头里面的UserId的参数，标识唯一用户
     * @param user  指定是哪个用户产生的ToKen
     * @return
     */
    public String generateToken(String userAgent, ItripUser user) throws Exception;


    /**
     * 保存一条Toke信息到redisc中
     *@param token    生成到的Token
     *@param user 当前的用户 （在redis保存的对应用户的信息,值就是这个User）
     */
    public void saveToken(String token,ItripUser user) throws  Exception;


    /**
     * 验证token的有效性
     * @param userAgent   为了保证每一个用户都是用同一个设备访问
     * @param token
     */
    public boolean validate(String userAgent,String token);

    /**
     * 删除token
     * @param token
     */
    public void deleteToken(String token);

    /**
     * 新老token置换  //1验证 2生 成新token 3 延长维护老token
     * 1 生成新的token
     *  2 老token不能删除 让他继续存在
     *   3 留出新旧过度的时间
     * @param userAgent
     * @param token
     * @return  新的token
     */
    public String reloadToken(String userAgent,String token) throws Exception;
}
